package com.atguigu.gmall.product.service;

import com.atguigu.gmall.model.product.*;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface ManagerService {

    List<BaseCategory1> getCategory1();

    List<BaseCategory2> getCategory2(Long category1Id);

    List<BaseCategory3> getCategory3(Long category2Id);

    List<BaseAttrInfo> attrInfoList(Long category1Id, Long category2Id, Long category3Id);

    //保存平台属性,属性值
    void saveAttrInfo(BaseAttrInfo baseAttrInfo);

    //分页获取 品牌列表
    IPage<BaseTrademark> baseTrademark(Integer page, Integer limit);

    //获取spu分页列表,根据三级分类id
    IPage<SpuInfo> spuPage(Integer page, Integer limit, Long category3Id);

    //查询所有品牌集合
    List<BaseTrademark> getTrademarkList();

    //获取销售属性
    List<BaseSaleAttr> baseSaleAttrList();

    //保存商品信息
    void saveSpuInfo(SpuInfo spuInfo);

    //根据spuId获取图片列表
    List<SpuImage> spuImageList(Long spuId);

    //根据spuId 查询销售属性及嵌套的属性值集合
    List<SpuSaleAttr> spuSaleAttrList(Long spuId);

    //保存Sku 四张表
    void saveSkuInfo(SkuInfo skuInfo);

    //查询Sku分页列表
    IPage<SkuInfo> skuList(Integer page, Integer limit);

    void onSale(Long skuId);

    void cancelSale(Long skuId);

    //根据skuId 查询库存表
    SkuInfo getSkuInfo(Long skuId);

    //根据三级分类的ID 查询一二三级分类的ID、名称
    BaseCategoryView getBaseCategoryView(Long category3Id);

    //单独查询价格
    BigDecimal getPrice(Long skuId);

    List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(Long skuId, Long spuId);

    Map getSkuValueIdsMap(Long spuId);

    //查询分类视图对象集合 （查询全部）
    List<Map> getBaseCategoryList();

    //对外暴露品牌 根据品牌id
    BaseTrademark getTrademarkByTmId(Long tmId);

    //根据skuId 查询 平台属性ID、属性名称、及平台属性值
    List<SkuAttrValue> getSkuAttrValueList(Long skuId);
}
